spec:
  versions:
    - name: v1alpha1
      schema:
        openAPIV3Schema:
          description: |
            Определяет режим и настройки обновления модуля.
          properties:
            spec:
              properties:
                releaseChannel:
                  description: |
                    Желаемый канал обновления модуля.
                    Порядок возрастания стабильности канала обновлений (от **наименее** стабильного к **наиболее** стабильному): `Alpha`, `Beta`, `EarlyAccess`, `Stable`, `RockSolid`.
                update:
                  description: |
                    Режим и настройки обновления модуля.
                  properties:
                    mode:
                      description: |
                        Режим обновления минорных версий модуля.
                        - `Auto` (автоматический) — все обновления применяются автоматически.

                          Обновления минорной версии модуля (обновление релиза, например, с `v1.26.*` на `v1.27.*`) применяются с учетом заданных окон обновлений либо, если окна обновлений не заданы, по мере появления обновлений на соответствующем канале обновлений.
                        - `Manual` (ручной) — для обновления **минорной версии модуля** (обновление релиза, например, с `v1.26.*` на `v1.27.*`) необходимо подтверждение. Для подтверждения обновления установите аннотацию `modules.deckhouse.io/approved="true"` в соответствующем ресурсе ModuleRelease.

                        - `Ignore` — обновления отключены.
                    windows:
                      description: |
                        Расписание окон обновления модуля.
                      items:
                        properties:
                          from:
                            description: |
                              Время начала окна обновления (в часовом поясе UTC).

                              Должно быть меньше времени окончания окна обновления.
                          to:
                            description: |
                              Время окончания окна обновления (в часовом поясе UTC).

                              Должно быть больше времени начала окна обновления.
                          days:
                            description: Дни недели, в которые применяется окно обновлений.
                            items:
                              description: День недели.
                moduleReleaseSelector:
                  type: object
                  description: |
                    Определяет модули к которым применяются настройки обновления.
                  properties:
                    labelSelector:
                      description: |
                        Определяет фильтр на основе меток, указанных у целевых модулей

                        Если указаны одновременно `matchExpressions` и `matchLabels`, учитываются оба фильтра (AND).
                      type: object
                      properties:
                        matchExpressions:
                          type: array
                          description: Список фильтров на основе выражений.
                          items:
                            type: object
                            properties:
                              key:
                                description: Имя метки.
                                type: string
                              operator:
                                description: Оператор сравнения.
                                type: string
                              values:
                                type: array
                                description: Значение метки.
                                items:
                                  type: string
                        matchLabels:
                          type: object
                          description: Фильтр на основе совпадения меток.
                          additionalProperties:
                            type: string
            status:
              properties:
                matchedModules:
                  description: Список модулей подпадающих под данные настройки обновления.
                errors:
                  description: Список сообщений об ошибках.
      subresources:
        status: {}
      additionalPrinterColumns:
        - name: release channel
          jsonPath: .spec.releaseChannel
          type: string
          description: Канал обновления модуля.
        - name: update mode
          jsonPath: .spec.update.mode
          type: string
          description: Режим обновления модуля.
        - name: update windows
          jsonPath: .spec.update.windows
          type: string
          description: Окна обновления модуля.
